package com.huirui.server.properties;

import io.jsonwebtoken.Jwts;
import jakarta.annotation.PostConstruct;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * JWT相关配置属性类
 * 用于读取并封装application配置文件中以"huirui.jwt"为前缀的配置项
 * 集中管理小程序端和管理员端的JWT令牌配置信息
 */
@Data
@Component
@ConfigurationProperties(prefix = "huirui.jwt")
public class JwtProperties {


    /**
     * 小程序JWT令牌过期时间（毫秒）
     * 对应配置项：huirui.jwt.mini-program-expiration
     * 控制小程序端生成的JWT令牌的有效时长，例如86400000表示24小时
     */
    private Long miniProgramExpiration;

    /**
     * 小程序JWT令牌在请求中的参数名
     * 对应配置项：huirui.jwt.mini-program-token-name
     * 定义小程序端请求时携带JWT令牌的参数名称（通常用于Header中的键名，如"X-Token"）
     */
    private String miniProgramTokenName;

    /**
     * 管理员端JWT令牌过期时间（毫秒）
     * 对应配置项：huirui.jwt.admin-expiration
     * 控制管理员后台生成的JWT令牌的有效时长，建议设置 shorter 于小程序端（如3600000表示1小时）
     */
    private Long adminExpiration;

    /**
     * 管理员端JWT令牌在请求中的参数名
     * 对应配置项：huirui.jwt.admin-token-name
     * 定义管理员后台请求时携带JWT令牌的参数名称（可与小程序端不同，如"Admin-Token"）
     */
    private String adminTokenName;

    private String adminTokenSecret;

    private String miniProgramSecret;

}
